#include "myscene.h"
//QObject改为QGraphicsScene
//p25:七、包含一个随机数头文件
#include <stdlib.h>
#include "handler.h"

myScene::myScene(QObject *parent) : QGraphicsScene(parent)
{
    int i = 0;
    for(i = 0;i < 16; i++){
        //四、new出一个图元对象
        this->item[i] = new myItem;
        //p23：一、获取图元的宽高，x和y的坐标。这里获取宽和高
        //p23：二、QGraphicsItem类中方法设置图元在场景中的位置
        this->item[i]->setPos(i/4 * this->item[i]->boundingRect().width(),
                              i % 4 * this->item[i]->boundingRect().height());
        //五、把图元放入场景中
        this->addItem(this->item[i]);
    }
    //p25:四、使用定时器让固定时间换图片的元
    this->ptimer = new QTimer;
    connect(this->ptimer,SIGNAL(timeout()),this,SLOT(showMouse()));
    //p25:十、启动定时器
    //this->ptimer->start(1000);


}
//当定时器时间到了触发该函数
void myScene::showMouse(){
    //p25:八、随机一个数0-15
    //1-3个老鼠随机弹
    int count = rand()%3 + 1;
    int i = 0;
    //p25:十一、让图片还原
    for(i = 0;i < 16;i++){
        this->item[i]->setPic(":/bg/pic/bg.png");
        //p25：当前图元不是老鼠的时候this->mouse是false
        this->item[i]->setMouse(false);
    }

    //p25:九、一次性弹出多个老鼠的效果
    for(i = 0;i < count;i++){
        int index = rand()%16;//%16控制随机数的范围
        this->item[index]->setPic(":/bg/pic/bg1.png");
        //p26：当前图元是老鼠的时候this->mouse是true
        //p26：在myitem中点击事件会判断当前点击事图元的this->mouse的状态，以此来触发相应的事件
        this->item[index]->setMouse(true);
    }
}

void myScene::startGame(){
    int i = 0;
    for(i = 0;i < 16;i++){
        this->item[i]->setStart(true);
    }

    this->ptimer->start(800);
}
void myScene::pauseGame(){
    int i = 0;
    for(i = 0;i < 16;i++){
        this->item[i]->setStart(false);
    }
    this->ptimer->stop();
}
void myScene::stopGame(){
    handler * hand = handler::getInstance();
    hand->clearScore();

    int i = 0;
    for(i = 0;i < 16;i++){
        this->item[i]->setStart(false);
    }
    this->ptimer->stop();
    //让图片还原
    for(i = 0;i < 16;i++){
        this->item[i]->setPic(":/bg/pic/bg.png");
        //p25：当前图元不是老鼠的时候this->mouse是false
        this->item[i]->setMouse(false);
    }
}
